package com.it.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map;

// TODO SPringMVC (5)、共享域对象操作
/**
 * 【说明】：
 * 1、什么是共享域？
 * 共享域就是一种数据间接传递的手段，通过请求转发或者请求重定向的方式进行
 */
@Controller
@RequestMapping("/domain")
@ResponseBody
public class springmvc05 {
    /**
     * TODO 原生方式存储共享域
     */
    private ServletContext servletContext;

    @GetMapping("/data1")
    public String data1(HttpServletRequest request, HttpSession session) {
        return "";
    }

    /**
     * TODO SpringMVC 数据存储共享域（仅了解）
     * 【语法】：Model、
     */
    public void data2(Model model) {
        model.addAttribute("key1", "value1");
    }

    public void data3(ModelMap modelMap) {
        modelMap.addAttribute("key2", "value2");
    }

    public void data4(Map map) {
        map.put("key3", "value3");
    }

    public ModelAndView data5() {
        ModelAndView andView = new ModelAndView();
        andView.addObject("key4", "value4");
        return andView;
    }
}
